package com.yy.QSManage.service.other.scheduler;

import java.util.List;

public interface ITaskSchedulerService {


    /**
     * 添加定时任务信息
     *
     * @param taskScheduler 定时任务信息
     */
    void save(TaskScheduler taskScheduler);

    /**
     * 移除定时任务--根据任务名称移除
     *
     * @param jobName 任务名
     */
    void delete(String jobName);

    /**
     * 移除定时任务
     *
     * @param groupName 组名
     * @param jobName   任务名
     */
    void delete(String jobName, String groupName);

    /**
     * 修改定时任务
     *
     * @param taskScheduler 任务信息
     */
    void update(TaskScheduler taskScheduler);

    /**
     * 添加任务
     *
     * @param jobName 任务名
     * @return 任务信息
     */
    TaskScheduler selectByName(String jobName);

    /**
     * 查询单个定时任务信息
     *
     * @param groupName 组名称
     * @param jobName   任务名称
     * @return 查询结果
     */
    TaskScheduler selectByName(String jobName, String groupName);


    /**
     * 查询定时任务列表
     *
     * @param jobQuery 查询条件
     * @return 查询结果
     */
    List<TaskScheduler> selectList(JobQuery jobQuery);

    /**
     * 暂停定时任务
     *
     * @param jobName 任务名
     */
    void pause(String jobName);

    /**
     * 暂停定时任务
     *
     * @param jobName   任务名
     * @param groupName 组名
     */
    void pause(String jobName, String groupName);

    /**
     * 恢复定时任务
     *
     * @param jobName 任务名
     */
    void resume(String jobName);

    /**
     * 恢复定时任务
     *
     * @param jobName   任务名
     * @param groupName 组名
     */
    void resume(String jobName, String groupName);

    /**
     * 执行定时任务
     *
     * @param jobName 任务名
     */
    void executeJob(String jobName);

    /**
     * 执行定时任务
     *
     * @param jobName   任务名
     * @param groupName 组名
     */
    void executeJob(String jobName, String groupName);
}